/*
	Production.h

	Header file of the Production classes

	@author Wolfhead

*/

#pragma once

#ifndef _PRODUCTION_H_
#define _PRODUCTION_H_

#include "ProductionBasic.h"
#include "ProductionIMPL.h"
#include "ProductionParser.h"




/*
 *	MAKE_PRODUCTION
 *	Create a ProductionPtr
 *	@param std::string  production string description of the production
 *		   this string will be used in the CProductionParser
 *  @param IMPL_CLASS   CProductionIMPL  the implement of the production
 *  @return ProductionPtr
 */
#ifndef MAKE_PRODUCTION
#define MAKE_PRODUCTION(production,IMPL_Class)\
    (CProductionPtr(new CProduction(production, CProductionIMPLPtr(new IMPL_Class()))))
#endif // #ifndef MAKE_PRODUCTION

#endif // #ifndef _PRODUCTION_H_